Skip to main content

11 二进制编码

二进制的“逢二进一”

无符号整数

0011 = 0×23+0×22+1×21+1×20 = 3

有符号整数

原码表示法:把一个数最左侧的一位作为对应的正负号, 0 为正数,1 为负数

0011 :+3

1011 :-3

补码表示法:最高位是 1,必然是负数;最高位是 0,必然是正数。

0000 :0

1000 :-8

字符串的表示

ASCII 码

(American Standard Code for Information Interchange,美国信息交换标准代码)

数值 9: 0000 1001

字符串: 0011 1001

数值 15: 0000 1111

字符串 15:0011 0001 和 0011 0101(字符 1 和 5 连续放在一起)

整数及浮点数,采用二进制序列化会比存储文本省空间。

字符集和字符编码

字符集(Charset):表示字符的一个集合

Unicode 是一个字符集,包含了 150 种语言的 14 万个不同的字符。

字符编码(Character Encoding):对于字符集里的字符,怎么一一用二进制表示出来的一个字典。

Unicode 可以用 UTF-8、UTF-16、UTF-32 进行编码,存储成二进制。

只要确定编码规则,就可以正常传输、显示这段代码。

同样的文本,采用不同的编码存储下来。另外一个程序,用一种不同的编码方式来进行解码和展示,就会出现乱码。